DB設計について④ 第3正規形について
第3正規形
推移的関数従属が解消されている形
推移的関数従属
→2段階の関数従属がある状態。
さきほど正規化したテーブルをもういちど
https://gyazo.com/4f58f2edc648ddd74e3bfebc72cbac11
あ!部署として存在しているけど社員がいない場合、部署をテーブルに反映できないぞ!!
これは推移的関数従属が発生しているためである。
詳細にみていこう。
{会社ID、社員ID}→{部署ID} 1つ目の関数従属
{部署ID}→{部署名} 2つ目の関数従属
すなわち、会社IDと社員IDが決まれば部署IDが決まり、部署IDが決まれば部署名が決まるという2段階の関数従属がある。
解決するには以下のようにテーブルを分ける。
https://gyazo.com/76d467bae51060aac8762b73c3e4e6be